package net.sourceforge.cruisecontrol.distributed.core; import junit.framework.TestCase; import java.security.Permission; import java.util.List; import java.util.Arrays; /** * @author Dan Rollo * Date: Sep 10, 2009 * Time: 10:35:13 PM */ public class ReggieUtilTest extends TestCase { //private static final Logger LOG = Logger.getLogger(ReggieUtilTest.class); public void testSetupRMISecurityManager() { final SecurityManager origSecurityManager = System.getSecurityManager(); if (origSecurityManager != null) { // skip this test, as we're likely running under webstart and have a real SecurityManager installed. return; } try { final class MySecurityManager extends SecurityManager { private final List<String> expectedPermsToAllow = Arrays.asList( "setSecurityManager", "getProperty.networkaddress.cache.ttl", "sun.net.inetaddr.ttl", "getProperty.networkaddress.cache.negative.ttl"); @Override public void checkPermission(Permission permission) { if (expectedPermsToAllow.contains(permission.getName())) { return; } if (!permission.getActions().contains("read")) { final String msg = "testSetupRMISecurityManager() checked new permission : " + permission.getName(); System.out.println(msg); // use of LOG here gets dicey with sec manager games... //LOG.warn(msg); } } } // setup "non-RMI" security manager System.setSecurityManager(new MySecurityManager()); // should allow (and just log) unexpected existing Security Manager ReggieUtil.setupRMISecurityManager(); } finally { System.setSecurityManager(origSecurityManager); } } }